package net.nio;

import java.io.IOException;
import java.io.RandomAccessFile;
import java.nio.channels.FileChannel;

/**
 * MappedBuffer可以直接让文件在内存中修改,不需要操作系统拷贝一次
 *
 * @author 王霄
 * @date 2021/8/22 09:01
 */
public class MappedByteBuffer_ {

    public static void main(String[] args) throws IOException {
        var randomAccessFile = new RandomAccessFile("d:\\ddd.txt", "rw");

        //获取对应的文件通道
        var channel = randomAccessFile.getChannel();

        //MapMode mode：读写模式
        //long position：可以直接修改的起始位置
        //long size：映射到内存的大小(aaa.txt映射到内存的大小)
        var mappedByteBuffer = channel.map(FileChannel.MapMode.READ_WRITE, 0, channel.size());

        mappedByteBuffer.put(0, (byte) 'H');

        randomAccessFile.close();
    }
}
